
## Ввод-вывод данных. Строки

Тип str представляет строки. Строка представляет последовательность символов, заключенную в одинарные или двойные кавычки, например "hello" и 'hello'. В Python 3.x строки представляют набор символов в кодировке Unicode

``` python
message = "Hello World!"
print(message)  # Hello World!

 
name = 'Tom'
print(name)  # Tom

```
При этом, если строка имеет много символов, ее можно разбить на части и эти части разместить на разных строках кода. В этом случае вся строка заключается в круглые скобки, а ее отдельные части - в кавычки:

``` python
text = ("Laudate omnes gentes laudate "
        "Magnificat in secula ")
print(text)

```
Если же мы хотим определить многострочный текст, то такой текст заключается в тройные двойные или одинарные кавычки:

``` python
'''
Это комментарий
'''
text = '''Laudate omnes gentes laudate
Magnificat in secula
Et anima mea laudate
Magnificat in secula 
'''
print(text)
```

При использовани тройных одинарных кавычек не стоит путать их с комментариями: если текст в тройных одинарных кавычках присваивается переменной, то это строка, а не комментарий.


### Базовые операции над строками

Давайте посмотрим, какие базовые операции можно выполнять со строками в Python.

Например, мы хотим соединить две строки между собой:

```python
s1 = "Я люблю"
s2 = "язык Python"
```
Это можно сделать с помощью оператора +, который в случае со строками выполняет их объединение (конкатенацию):

```python
s3 = s1 + s2
print(s3)
```

Но мы бы хотели добавить пробел между словами. Сделаем это так:

```python
s3 = s1 + " " + s2
```

С помощью первого оператора + добавляем пробел к первой строке, а затем, вторым оператором + добавляем вторую строку s2.

Но при использовании оператора конкатенации следует быть осторожным – он объединяет строки между собой. Например, команда:

```python
s3 = s1 + 5
```

приведет к ошибке, так как операнд справа является числом, а не строкой.

Если нам все же необходимо соединить строку с числом, то предварительно число нужно преобразовать в строку. Сделать это можно с помощью специальной функции `str()`:

```python
s3 = s1 + str(5)
```

Функция `str()` выполняет преобразование в строки разные типы данных, не только числа, например, можно указать булевое значение:

```python
str(True)
```

а также другие типы данных, о которых мы еще с вами будем говорить.

Следующий оператор *, применительно к строкам, выполняет их дублирование, указанное число раз:
```python
"ха " * 5
```
Причем, здесь мы должны указывать именно целое число, для вещественных получим ошибку:

```python
"ха " * 5.5
```
И это понятно, так как продублировать строку 5,5 раз нельзя.
Следующая функция len() возвращает длину строки (число символов в строке):

```python
a = "hello"
len(a)
```
Для пустой строки получим значение 0:

> len("")
И, как видите, этой функции можно передавать или переменную на строку, или непосредственно записывать строки:

> len("Python")

Следующий оператор in позволяет проверять наличие подстроки в строке, например:
```python
'ab' in "abracadabra"
'abc' in "abracadabra"
```
Следующая важная группа операторов – сравнения строк. В самом простом случае, строки можно сравнивать на равенство:
```python
a == "hello"
# Но сравнение:
a == "Hello"
```
вернет False, так как большая буква H и малая h – это два разных символа. 

Для сравнения на неравенство используем оператор не равно:
```python
a != "hello"
a != "hello "
```

